﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Modelo.Modulos.ClasesModelado;

namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    public class PerfilesBD
    {
        public int InsertarPerfil(SqlCommand comando, PerfilesMod obj)
        {
            try
            {
                string sp = "spInsertarPerfil";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@IdPerfil", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@NombrePerfil", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@DescripcionPerfil", SqlDbType.VarChar));
               

                comando.Parameters[0].Direction = ParameterDirection.Output;
                comando.Parameters[1].Value = obj.NombrePerfil;
                comando.Parameters[2].Value = obj.DescripcionPerfil;
                
               

                comando.ExecuteNonQuery();

                return Convert.ToInt32(comando.Parameters[0].Value);

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<PerfilesMod> ConsultarPerfil(SqlCommand comando)
        {
            try
            {
                string sp = "spConsultarPerfiles";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<PerfilesMod> lista = new List<PerfilesMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    PerfilesMod obj = new PerfilesMod();
                    obj.IdPerfil = Convert.ToInt32(dt.Rows[i]["IdPerfil"]);
                    obj.NombrePerfil = dt.Rows[i]["NombrePerfil"].ToString();
                    obj.DescripcionPerfil = dt.Rows[i]["DescripcionPerfil"].ToString();
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public void EliminarPerfil(SqlCommand comando, PerfilesMod obj)
        {
            try
            {
                string sp = "spEliminaPerfil";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@IdPerfil", SqlDbType.Int));

                comando.Parameters[0].Value = obj.IdPerfil;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }
        public void EliminarPerfil_Permiso(SqlCommand comando, PerfilesMod obj)
        {
            try
            {
                string sp = "spEliminaPerfil_Permiso";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@IdPerfil", SqlDbType.Int));

                comando.Parameters[0].Value = obj.IdPerfil;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<PerfilesMod> ConsultarPerfilId(SqlCommand comando, PerfilesMod objs)
        {
            try
            {
                string sp = "spConsultarPerfilbyId";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdPerfil", SqlDbType.Int));

                comando.Parameters[0].Value = objs.IdPerfil;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<PerfilesMod> lista = new List<PerfilesMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    PerfilesMod objPerfiles = new PerfilesMod();

                    objPerfiles.NombrePerfil = dt.Rows[i]["NombrePerfil"].ToString();
                    objPerfiles.DescripcionPerfil = dt.Rows[i]["DescripcionPerfil"].ToString();
                    objPerfiles.NombreModulo = dt.Rows[i]["NombreModulo"].ToString();
                    objPerfiles.NombrePermiso = dt.Rows[i]["NombrePermiso"].ToString();
                    objPerfiles.IdPermiso=Convert.ToInt32(dt.Rows[i]["IdPremiso"].ToString());
                    lista.Add(objPerfiles);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        
    }

    
}
